pub fn run_examples() {
  println!("===== Rust 整数示例 =====\n");

  // 1. 函数定义及基础使用
  println!("1. 函数定义及基础使用:");
  example_1();

  // 2. 函数返回为空, 即空元组
  println!("2. 函数返回为空, 即空元组:");
  example_2();

  // 3. 函数永不返回(Never 类型)
  println!("3. 函数永不返回(Never 类型):");
  example_3();
}

// 1. 函数定义及基础使用
fn example_1() {
  let (x, y) = (1, 2);
  let s = sum(x, y);

  assert_eq!(s, 3);
  println!("    fn 标识");
  println!("    出参和入参数要显式写明");
  println!("    如 fn sum(x: i32, y: i32) -> i32 {{ x + y }}");
}

fn sum(x: i32, y: i32) -> i32 {
  x + y
}

// 2. 函数返回为空, 即空元组
fn example_2() {
  println!("    如 fn print() -> () {{ println!(\"hello,world\"); }}");
  print();
}

fn print() -> () {
  println!("    hello,world");
}

// 3. 函数永不返回(Never 类型)
fn example_3() {
  never_return();
}

use std::{thread, time};

fn never_return() -> ! {
  loop {
    println!("    I return nothing");
    // sleeping for 1 second to avoid exhausting the cpu resource
    thread::sleep(time::Duration::from_secs(1))
  }
}
